<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
<!-- paintsystem.qdoc -->
  <title>Paint System | Qt GUI 5.14.2</title>
  <link rel="stylesheet" type="text/css" href="style/offline-simple.css" />
  <script type="text/javascript">
    document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css");
    // loading style sheet breaks anchors that were jumped to before
    // so force jumping to anchor again
    setTimeout(function() {
        var anchor = location.hash;
        // need to jump to different anchor first (e.g. none)
        location.hash = "#";
        setTimeout(function() {
            location.hash = anchor;
        }, 0);
    }, 0);
  </script>
</head>
<body>
<div class="header" id="qtdocheader">
  <div class="main">
    <div class="main-rounded">
      <div class="navigationbar">
        <table><tr>
<td ><a href="../qtdoc/index.html">Qt 5.14</a></td><td ><a href="qtgui-index.html">Qt GUI</a></td><td >Paint System</td></tr></table><table class="buildversion"><tr>
<td id="buildversion" width="100%" align="right"><a href="qtgui-index.html">Qt 5.14.2 Reference Documentation</a></td>
        </tr></table>
      </div>
    </div>
<div class="content">
<div class="line">
<div class="content mainContent">
<div class="sidebar">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#topics">Topics</a></li>
<li class="level1"><a href="#classes-for-painting">Classes for Painting</a></li>
</ul>
</div>
<div class="sidebar-content" id="sidebar-content"></div></div>
<h1 class="title">Paint System</h1>
<span class="subtitle"></span>
<!-- $$$paintsystem.html-description -->
<div class="descr"> <a name="details"></a>
<p>Qt's paint system enables painting on screen and print devices using the same API, and is primarily based on the <a href="qpainter.html">QPainter</a>, <a href="qpaintdevice.html">QPaintDevice</a>, and <a href="qpaintengine.html">QPaintEngine</a> classes.</p>
<p><a href="qpainter.html">QPainter</a> is used to perform drawing operations, <a href="qpaintdevice.html">QPaintDevice</a> is an abstraction of a two-dimensional space that can be painted on using a <a href="qpainter.html">QPainter</a>, and <a href="qpaintengine.html">QPaintEngine</a> provides the interface that the painter uses to draw onto different types of devices. The <a href="qpaintengine.html">QPaintEngine</a> class is used internally by <a href="qpainter.html">QPainter</a> and <a href="qpaintdevice.html">QPaintDevice</a>, and is hidden from application programmers unless they create their own device type.</p>
<p class="centerAlign"><img src="images/paintsystem-core.png" alt="" /></p><p>The main benefit of this approach is that all painting follows the same painting pipeline making it easy to add support for new features and providing default implementations for unsupported ones.</p>
<a name="topics"></a>
<h2 id="topics">Topics</h2>
<ul>
<li><a href="paintsystem.html#classes-for-painting">Classes for Painting</a></li>
<li><a href="paintsystem-devices.html">Paint Devices and Backends</a></li>
<li><a href="paintsystem-drawing.html">Drawing and Filling</a></li>
<li><a href="coordsys.html">Coordinate System</a></li>
<li><a href="paintsystem-images.html">Reading and Writing Image Files</a></li>
</ul>
<a name="classes-for-painting"></a>
<h2 id="classes-for-painting">Classes for Painting</h2>
<p>These classes provide support for painting onto a paint device.</p>
<div class="table"><table class="annotated">
<tr class="odd topAlign"><td class="tblName"><p><a href="qbitmap.html">QBitmap</a></p></td><td class="tblDescr"><p>Monochrome (1-bit depth) pixmaps</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qbrush.html">QBrush</a></p></td><td class="tblDescr"><p>Defines the fill pattern of shapes drawn by QPainter</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qcolor.html">QColor</a></p></td><td class="tblDescr"><p>Colors based on RGB, HSV or CMYK values</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qcolorspace.html">QColorSpace</a></p></td><td class="tblDescr"><p>Color space abstraction</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qcolortransform.html">QColorTransform</a></p></td><td class="tblDescr"><p>Transformation between color spaces</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtwidgets/qcolormap.html">QColormap</a></p></td><td class="tblDescr"><p>Maps device independent QColors to device dependent pixel values</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qconicalgradient.html">QConicalGradient</a></p></td><td class="tblDescr"><p>Used in combination with QBrush to specify a conical gradient brush</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qfont.html">QFont</a></p></td><td class="tblDescr"><p>Specifies a query for a font used for drawing text</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qfontmetrics.html">QFontMetrics</a></p></td><td class="tblDescr"><p>Font metrics information</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qfontmetricsf.html">QFontMetricsF</a></p></td><td class="tblDescr"><p>Font metrics information</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qgenericmatrix.html">QGenericMatrix</a></p></td><td class="tblDescr"><p>Template class that represents a NxM transformation matrix with N columns and M rows</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qgradient.html">QGradient</a></p></td><td class="tblDescr"><p>Used in combination with QBrush to specify gradient fills</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qicon.html">QIcon</a></p></td><td class="tblDescr"><p>Scalable icons in different modes and states</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qiconengine.html">QIconEngine</a></p></td><td class="tblDescr"><p>Abstract base class for QIcon renderers</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qimage.html">QImage</a></p></td><td class="tblDescr"><p>Hardware-independent image representation that allows direct access to the pixel data, and can be used as a paint device</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qimagereader.html">QImageReader</a></p></td><td class="tblDescr"><p>Format independent interface for reading images from files or other devices</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qimagewriter.html">QImageWriter</a></p></td><td class="tblDescr"><p>Format independent interface for writing images to files or other devices</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtcore/qline.html">QLine</a></p></td><td class="tblDescr"><p>Two-dimensional vector using integer precision</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtcore/qlinef.html">QLineF</a></p></td><td class="tblDescr"><p>Two-dimensional vector using floating point precision</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qlineargradient.html">QLinearGradient</a></p></td><td class="tblDescr"><p>Used in combination with QBrush to specify a linear gradient brush</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtcore/qmargins.html">QMargins</a></p></td><td class="tblDescr"><p>Defines the four margins of a rectangle</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtcore/qmarginsf.html">QMarginsF</a></p></td><td class="tblDescr"><p>Defines the four margins of a rectangle</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qpagedpaintdevice.html">QPagedPaintDevice</a></p></td><td class="tblDescr"><p>Represents a paint device that supports multiple pages</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qpaintdevice.html">QPaintDevice</a></p></td><td class="tblDescr"><p>The base class of objects that can be painted on with QPainter</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qpaintengine.html">QPaintEngine</a></p></td><td class="tblDescr"><p>Abstract definition of how QPainter draws to a given device on a given platform</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qpainter.html">QPainter</a></p></td><td class="tblDescr"><p>Performs low-level painting on widgets and other paint devices</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qpainterpath.html">QPainterPath</a></p></td><td class="tblDescr"><p>Container for painting operations, enabling graphical shapes to be constructed and reused</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qpainterpathstroker.html">QPainterPathStroker</a></p></td><td class="tblDescr"><p>Used to generate fillable outlines for a given painter path</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qpdfwriter.html">QPdfWriter</a></p></td><td class="tblDescr"><p>Class to generate PDFs that can be used as a paint device</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qpen.html">QPen</a></p></td><td class="tblDescr"><p>Defines how a QPainter should draw lines and outlines of shapes</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qpixmap.html">QPixmap</a></p></td><td class="tblDescr"><p>Off-screen image representation that can be used as a paint device</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtcore/qpoint.html">QPoint</a></p></td><td class="tblDescr"><p>Defines a point in the plane using integer precision</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtcore/qpointf.html">QPointF</a></p></td><td class="tblDescr"><p>Defines a point in the plane using floating point precision</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qpolygon.html">QPolygon</a></p></td><td class="tblDescr"><p>Vector of points using integer precision</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qpolygonf.html">QPolygonF</a></p></td><td class="tblDescr"><p>Vector of points using floating point precision</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qradialgradient.html">QRadialGradient</a></p></td><td class="tblDescr"><p>Used in combination with QBrush to specify a radial gradient brush</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtcore/qrect.html">QRect</a></p></td><td class="tblDescr"><p>Defines a rectangle in the plane using integer precision</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtcore/qrectf.html">QRectF</a></p></td><td class="tblDescr"><p>Defines a rectangle in the plane using floating point precision</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qregion.html">QRegion</a></p></td><td class="tblDescr"><p>Specifies a clip region for a painter</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qrgba64.html">QRgba64</a></p></td><td class="tblDescr"><p>Struct contains a 64-bit RGB color</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtcore/qsize.html">QSize</a></p></td><td class="tblDescr"><p>Defines the size of a two-dimensional object using integer point precision</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtcore/qsizef.html">QSizeF</a></p></td><td class="tblDescr"><p>Defines the size of a two-dimensional object using floating point precision</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtwidgets/qstylepainter.html">QStylePainter</a></p></td><td class="tblDescr"><p>Convenience class for drawing QStyle elements inside a widget</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qsupportedwritingsystems.html">QSupportedWritingSystems</a></p></td><td class="tblDescr"><p>Used when registering fonts with the internal Qt fontdatabase</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtsvg/qsvggenerator.html">QSvgGenerator</a></p></td><td class="tblDescr"><p>Paint device that is used to create SVG drawings</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="../qtsvg/qsvgrenderer.html">QSvgRenderer</a></p></td><td class="tblDescr"><p>Used to draw the contents of SVG files onto paint devices</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="../qtsvg/qsvgwidget.html">QSvgWidget</a></p></td><td class="tblDescr"><p>Widget that is used to display the contents of Scalable Vector Graphics (SVG) files</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qtransform.html">QTransform</a></p></td><td class="tblDescr"><p>Specifies 2D transformations of a coordinate system</p></td></tr>
<tr class="odd topAlign"><td class="tblName"><p><a href="qvector2d.html">QVector2D</a></p></td><td class="tblDescr"><p>Represents a vector or vertex in 2D space</p></td></tr>
</table></div>
</div>
<!-- @@@paintsystem.html -->
        </div>
       </div>
   </div>
   </div>
</div>
<div class="footer">
   <p>
   <acronym title="Copyright">&copy;</acronym> 2020 The Qt Company Ltd.
   Documentation contributions included herein are the copyrights of
   their respective owners.<br/>    The documentation provided herein is licensed under the terms of the    <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation    License version 1.3</a> as published by the Free Software Foundation.<br/>    Qt and respective logos are trademarks of The Qt Company Ltd.     in Finland and/or other countries worldwide. All other trademarks are property
   of their respective owners. </p>
</div>
</body>
</html>
